package xyz.tanxiao.links.core.limit;

import xyz.tanxiao.links.common.enums.LimitTargetEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 计数器访问限流注解
 *
 * @author 万成波
 * @email 2300064869@qq.com
 * @createTime 2023-06-16 16:25:11 星期五
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SimpleAccessLimit {

	/**
	 * 限制访问目标接口
	 */
	LimitTargetEnum target();

	/**
	 * 限流级别：从 1 开始设置，依次递增。
	 */
	int level();

	/**
	 * 限制访问时间
	 */
	int time() default 1;


	/**
	 * 限制访问时间单位
	 */
	TimeUnit timeUnit() default TimeUnit.DAYS;

	/**
	 * 限制访问次数
	 */
	int count() default 100;

}